import java.util.Random;

/**
 * 加减法口算练习系统 V0.2
 * 生成50道100以内加减法算式习题，确保加法和不超过100，减法差不小于0
 * 每行显示多个算式，并输出答案
 */
public class CalculationSystemV02 {
    private static Random random = new Random();
    
    /**
     * 生成100以内的随机整数
     * @return 0-99之间的随机整数
     */
    public static int generateOperand() {
        return random.nextInt(100);
    }
    
    /**
     * 生成50道加法练习题，确保和不超过100，每行显示5个算式
     */
    public static void generateExerciseOfAdditionEquations() {
        System.out.println("50道100以内的加法运算练习题：");
        System.out.println("====================================");
        
        for (int i = 0; i < 50; i++) {
            int n, m, r;
            // 使用do-while循环确保和不超过100
            do {
                n = generateOperand();
                m = generateOperand();
                r = n + m;
            } while (r >= 100);
            
            // 每行的第一个算式前打印序号范围
            if (i % 5 == 0) {
                System.out.printf("%2d~%-2d: ", i + 1, Math.min(i + 5, 50));
            }
            
            // 每行打印5个算式
            System.out.printf("%2d+%2d=%3d   ", n, m, r);
            
            // 每5个算式换行
            if ((i + 1) % 5 == 0) {
                System.out.println();
            }
        }
    }
    
    /**
     * 实现生成带有答案的减法算式功能，确保差不小于0
     */
    public static void generateExerciseOfSubtractEquations() {
        System.out.println("\n50道100以内的减法运算练习题：");
        System.out.println("====================================");
        
        for (int i = 0; i < 50; i++) {
            int n, m, r;
            // 使用do-while循环确保被减数大于等于减数，确保差不小于0
            do {
                n = generateOperand();
                m = generateOperand();
                r = n - m;
            } while (r < 0);
            
            // 每行的第一个算式前打印序号范围
            if (i % 5 == 0) {
                System.out.printf("%2d~%-2d: ", i + 1, Math.min(i + 5, 50));
            }
            
            // 每行打印5个算式
            System.out.printf("%2d-%2d=%3d   ", n, m, r);
            
            // 每5个算式换行
            if ((i + 1) % 5 == 0) {
                System.out.println();
            }
        }
    }
    
    public static void main(String[] args) {
        // 输出系统标题
        System.out.println("加减法口算练习系统-v0.2");
        System.out.println("====================================");
        
        // 生成并输出加法练习题
        generateExerciseOfAdditionEquations();
        
        // 生成并输出减法练习题
        generateExerciseOfSubtractEquations();
        
        System.out.println("====================================");
    }
}